<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>二维码付款</title>
    <script type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
    <script type="text/javascript" src="js/jquery.qrcode.min.js"></script>
</head>
<body>

<a href="javascript:void(0);" onclick="WeChatPay()">点击生成付款二维码（微信）</a>
<div id="Orcode_div" style="height: 165px;width: 165px"></div>
</body>
<script type="application/javascript">
    var basePath="http://127.0.0.1:8087"

    //商户订单号
    var outTradeNo;

    //定时任务
    var WeChatPayTrade;
    //记录是否通知页面“用户已扫码”
    var WeChatPayFindNumber = true
    //微信商家唯一订单编号
    var WeChatPayOut_trade_no;

    /**
     * 微信支付分割线
     * sqy 2022/9/16
     */
    //支付宝预下单
    function WeChatPay() {
        $.ajax({
            url: basePath + '/WeiXinPayController/createNative',
            method: 'post',
            async: false,  //是否异步请求  默认truefalse为同步请求 ，true为异步请求）
            dataType: 'JSON',
            success: function (res) {
                if (res.code == 0) {
                    //商户订单编号
                    WeChatPayOut_trade_no = res.out_trade_no;
                    //创建订单二维码
                    createQrcode(res.QrCode);
                } else {
                    alert(res.msg)
                }
            }
        })
    }

    /**
     * 查询微信交易状态
     */
    function findWeChatPay_trade() {
        WeChatPayTrade = setInterval(function () {
            console.log("每3秒执行一次");
            $.ajax({
                url: basePath + '/WeiXinPayController/QueryPayStatus',
                method: 'post',
                async: false,  //是否异步请求  默认truefalse为同步请求 ，true为异步请求）
                data: {
                    "out_trade_no": WeChatPayOut_trade_no
                },
                dataType: 'JSON',
                success: function (res) {
                    if (res.code == 0 && res.OrderCode == "USERPAYING") {
                        //订单已经创建但未支付（用户扫码后但是未支付）
                        if (WeChatPayFindNumber) {
                            console.log("用户已扫码但是未支付");
                            WeChatPayFindNumber = false;
                        }
                    } else if (res.code == 0 && res.OrderCode == "SUCCESS") {
                        //阻止定时
                        window.clearInterval(WeChatPayTrade);
                        alert("订单已支付，感谢支持。。。");
                    }
                }
            })
        }, 3000);
    }

    var qRCode;
    //生成付款二维码
    function createQrcode(url) {
        if (qRCode != undefined && qRCode != '') {
            //清空之前的二维码
            $("#Orcode_div canvas").remove()
            $("#yes_qrcode").hide();
        }
        //生成二维码放入”Orcode_div“ div
        qRCode = $('#Orcode_div').qrcode({
            width: 168, //宽度
            height: 168, //高度
            text: url
        });
        if (url.indexOf("weixin") > -1) {
            findWeChatPay_trade();
        }
    }
</script>
</html>
